<?php namespace Home\Controller; 

use Hdphp\Controller\Controller;

//购物车控制器
class ShopCarController extends Controller{

	public function __init(){
		parent::__init();
	}
	
    //购物车页面
    public function index(){
//  	echo 3;die;
//		2-----获取购物车商品
//		获取商品
//		$data=Cart::getGoods(); 
		$data = Cart::getAllData();
//		将data分配到前台
//		p($data);die;
		
////		获取商品规格'',因为功能不同，但功能很好。留着以后参考
		if(!is_null($data['goods'])){
			foreach($data['goods'] as $k => $v){
				$combileArr = array();
		//			2.获取类型属性表
				$typeAttrData = Db::table('snshop_goods_attr ga')
					-> join('snshop_type_attr ta','ga.taid','=','ta.taid')
					-> field('taname','gtid','gtvalue')
					-> where('snshop_goods_gid',$v['id'])
					-> where('class',1)
					-> get();
//					p($typeAttrData);die;
		//				1.获取组合属性的name
				$combile = $data['goods'][$k]['options']['combile'];
				$combile = explode(",", $combile);
//				p($combile);die;
		//				3.储存获得的数组
				foreach($typeAttrData as $kk => $vv){
					foreach($combile as $kc => $vc){
						if($vv['gtid'] == $vc){
							$combileArr[$vv['taname']] = $vv['gtvalue'];
						}
					}
				}
				$data['goods'][$k]['combileArr'] = $combileArr;
				
				
//				将该商品的分类主键传入，以便前台（查找相似）使用
				$data['goods'][$k]['cid'] = Db::table('snshop_goods g')
									-> join('snshop_categroy c','g.snshop_categroy_cid','=','c.cid')
									-> where('gid',$v['id'])
									-> pluck('cid');
			}
//			p($data);die;
			View::with('data',$data);
		}else{
			View::with('data',array());
		}
////		写一个除去数组相同键值的函数 使用array_flip函数（两次）
//			$data[$k]['typeName'] = array_values(array_flip(array_flip($typeAttrData)));
//		p($data);die;
       View::make();
    }
	
//	添加购物车
	public function add(){
//		echo 4;die;
//		p($_SESSION);die;
//		p($_POST);die;
		$gid = Q('post.gid',0,'intval');
		$combine = Q('post.combine','');
//		因为传进来的 combine 最后一位是逗号，要去掉
		$combine = rtrim($combine,",");
		$kucunliang = Q('post.kucunliang',0,'intval');
		$num = Q('post.num',0,'intval');
//		查询该商品，获得属性
		$goodsData = Db::table('snshop_goods') -> where('gid',$gid) -> get();
		$goodsData = current($goodsData);
//		商品名字
		$name = $goodsData['gname'];
//		价格
		$shopprice = $goodsData['shopprice'];
//		商品列表图
//		echo $num;die;
		$pic = $goodsData['pic'];
		
		
//		echo 5;die;
//		p($combineArr);die;	
//		1---添加购物车
		$data = array(
		    'id'        => $gid, // 商品 ID 
		    'name'      => $name,// 商品名称 
		    'num'       => $num, // 商品数量 
		    'price'     => $shopprice, // 商品价格 
		    'options' => array(
		    // 其他参数如价格、颜色、可以为数组或字符串 
//		    'color'     => $combineArr[0], 
//		    'wangluoZhishi'  => $combineArr[2],
//		    'jishenNeicun'  => $combineArr[1],
		    'combile'=>$combine,
			'listImg'=>$pic,
		    )
		); 
		Cart::add($data); // 添加到购物车 
//		添加成功返回
//		p($_SESSION);
		echo 1;die;
		
		
//		---------


    }


//	删除单个购物车
	public function delOne(){
		$dataKey = Q('post.dataKey');
		$proNum = Q('post.proNum',0,'intval');
//		p($_POST);die;
////		2-----获取购物车所有商品
//		$data=Cart::getGoods(); 
//			foreach($data as $k => $v){
//			$_SESSION['cart']['goods'][$dataKey]['num'] = $proNum;
//		}
//		框架自带方法
		$data=array( 
		    'sid'=>$dataKey,// 唯一 sid，添加购物车时自动生成 
		    'num'=>$proNum, 
		); 
		Cart::update($data);

//		商品数据
		$allData = Cart::getAllData(); 
//		p($allData);die;
//		因为前台传进来的是json形式，所以要以json形式传回去
		$all = array('totalPrice' => $allData['total'],
		'total_rows' => $allData['total_rows'],
		);
//		p($all);die;
		View::ajax($all);die;
	}
	
//	删除选中的购物出去
	public function delChange(){
		$dataArr = Q('post.data');
//		p($dataArr);die;
		
		foreach($dataArr as $k => $v){
			//		框架自带方法
			$data=array( 
			    'sid'=>$v,// 唯一 sid，添加购物车时自动生成 
			    'num'=>0, 
			); 
			Cart::update($data);
		}
		
//		商品数据
		$allData = Cart::getAllData(); 
//		p($allData);die;
//		因为前台传进来的是json形式，所以要以json形式传回去
		$all = array('totalPrice' => $allData['total'],
		'total_rows' => $allData['total_rows'],
		);
//		p($all);die;
		View::ajax($all);die;
		
		
		
	}
	
	
//	改变session里面的num值
	public function changeNum(){
		
		$dataKey = Q('post.dataKey');
		$proNum = Q('post.proNum');
////		2-----获取购物车所有商品
//		$data=Cart::getGoods(); 
//			foreach($data as $k => $v){
//			$_SESSION['cart']['goods'][$dataKey]['num'] = $proNum;
//		}
//		框架自带方法
		$data=array( 
		    'sid'=>$dataKey,// 唯一 sid，添加购物车时自动生成 
		    'num'=>$proNum, 
		); 
		Cart::update($data);

//		商品总价
		$allData = Cart::getAllData(); 
//		p($allData);die;
//		因为前台传进来的是json形式，所以要以json形式传回去
		$all = array('totalPrice' => $allData['total'],
		'total_rows' => $allData['total_rows'],
		'totalOne' => $allData['goods'][$dataKey]['total'],
		);
//		p($all);die;
		View::ajax($all);die;
	}
	
}


















